home *** CD-ROM | disk | FTP | other *** search
/ GameSpot.it / GameSpot Italia (2001).bin / demo / severancedemo / data1.cab / Program_Files / Lib / Widgets / ScorerWidgets.py < prev    next >
Encoding:
Python Source  |  2000-10-13  |  38.6 KB  |  1,255 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. import BUIx
  8. import Bladex
  9. import Raster
  10. import Interpolator
  11. #import Enm_Def
  12. import Reference
  13. import math
  14. import pdb
  15. import netgame
  16. import WidgetsExtra
  17. import types
  18.  
  19. font_server=BUIx.B_FontServer()
  20.  
  21. class B_GameTextWidget(BUIx.B_TextWidget):
  22.   def __init__(self,parent,name):
  23.     BUIx.B_TextWidget.__init__(self,parent,name,"\n\n\n\n\n",font_server,"../../Data/Mapa de letras.bmp")
  24.     self.Background=BUIx.B_RectWidget(self,name+"Background",0,0)
  25.     self.Background.SetSolid(1)
  26.     self.SetDrawFunc(self.Draw)
  27.  
  28.   def SetAlpha(self,al):
  29.     BUIx.B_TextWidget.SetAlpha(self,al)
  30.     #self.Background.SetAlpha(al*0.5)
  31.  
  32.   def Draw(self,x,y,time):
  33.     self.Background.DefDraw(x,y,time)
  34.     self.DefDraw(x,y,time)    # Posibles etiquetas.
  35.  
  36.   def SetText(self,txt):
  37.     BUIx.B_TextWidget.SetText(self,txt)
  38.     w,h=self.GetSize()
  39.     self.Background.SetSize(w,h)
  40.  
  41.  
  42.  
  43.  
  44.  
  45. class BarIncClass(Interpolator.LinearInt):
  46.   def __init__(self,init_value,end_value,widget):
  47.     Interpolator.LinearInt.__init__(self,init_value,end_value)
  48.     self.widget=widget
  49.  
  50.   def Execute(self,value):
  51.     ret=Interpolator.LinearInt.Execute(self,value)
  52.     self.widget.SetPosition(ret,0)
  53.  
  54.   def EndExecute(self):
  55.     self.widget.FinalUpdate()
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65. class B_SmoothBarWidget(BUIx.B_BarWidget):
  66.   def __init__(self,parent,name,width,height):
  67.     BUIx.B_BarWidget.__init__(self,parent,name,width,height)
  68.     self.interpolator=Interpolator.Interp("interp"+name)
  69.     self.Updating=0
  70.     self.CurrentTarget=self.GetPosition()
  71.  
  72.  
  73.   def SetPosition(self,pos,smooth=1):
  74.     currpos=self.GetPosition()
  75.     if currpos==pos:
  76.       return
  77.  
  78.     if smooth:
  79.       if self.Updating==1:
  80.         if self.CurrentTarget!=pos:
  81.           #Si ya estß actualizando y recibe una nueva petici≤n para otra posici≤n
  82.           # Trata de atenderla mßs tarde
  83.           Bladex.AddScheduledFunc(Bladex.GetTime()+1.5,self.SetPosition,(pos,1))
  84.           print "Posponed SetPosition",pos,smooth
  85.           return
  86.       else:
  87.         self.Updating=1
  88.         self.CurrentTarget=pos
  89.         now=Bladex.GetTime()
  90.         #print "Updating level bar: now:",now,"pos:",pos,"currpos:",currpos
  91.         m_interp=BarIncClass(currpos,pos,self)
  92.         self.interpolator.AddAction(now,now+1.5,m_interp)
  93.     else:
  94.       BUIx.B_BarWidget.SetPosition(self,pos)
  95.  
  96.  
  97.   def FinalUpdate(self):
  98.     self.Updating=0
  99.     BUIx.B_BarWidget.SetPosition(self,self.CurrentTarget)
  100.     
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107. class B_Obj3DWidget(BUIx.B_RectWidget):
  108.   def __init__(self,Parent,Name,width,Height,BODName,ObjectName=""):
  109.     BUIx.B_RectWidget.__init__(self,Parent,Name,width,Height)
  110.     self.SetData(self)
  111.     self.BODName=BODName
  112.     self.ObjectName=ObjectName
  113.     self.SetDrawFunc(self.Draw)
  114.     self.Selected=0
  115.     self.Solid=0
  116.     self.Border=0
  117.     self.Scale=0.1 
  118.  
  119.  
  120.   def Draw(self,x,y,time):
  121.     if self.BODName==None:
  122.       return
  123.  
  124.     if self.GetVisible()==0:
  125.       return
  126.  
  127. #    if self.Selected:
  128. #      Raster.SetAlpha(1.0)
  129. #    else:
  130. #      Raster.SetAlpha(0.40)
  131.     self.DefDraw(x,y,time)    # Posibles etiquetas.
  132.     w,h=self.GetSize()
  133.     Raster.SetAlpha(self.GetAlpha())
  134.     if self.GetAutoScale():
  135.       rw,rh=Raster.GetSize()
  136.       self.Scale=0.1*rw/640.0
  137.     Bladex.DrawBOD(self.BODName,x,y,w,h,self.Scale,1)
  138.     
  139.   def SetBOD(self,BODName):
  140.     self.BODName=BODName    
  141.  
  142.   def GetBOD(self):
  143.     return self.BODName
  144.  
  145.   def SetObjectName(self,ObjectName):
  146.     self.ObjectName=ObjectName    
  147.  
  148.   def GetObjectName(self):
  149.     return self.ObjectName
  150.  
  151.  
  152. def GetUnusedKeys(inv):
  153.       import darfuncs
  154.       
  155.       i = 0
  156.       for j in range(inv.nKeys):
  157.         key = Bladex.GetEntity(inv.GetKey(j))
  158.  
  159.         if type(key.Data) is types.IntType:
  160.           auxval = key.Data
  161.           key.Data = darfuncs.EmptyClass()
  162.           key.Data.Used = auxval
  163.         
  164.         if key.Data==None:
  165.           key.Data = darfuncs.EmptyClass()
  166.           key.Data.Used = 1
  167.         if key.Data.Used>0:
  168.           i=i+1
  169.       return i 
  170.  
  171.  
  172.  
  173.  
  174. if netgame.GetNetState() == 0:
  175.   import Select
  176.   
  177.   ObjSlTimer = -500
  178.   
  179.   
  180.   
  181.   class B_InvKeyRing3DWidget(BUIx.B_TextWidget):
  182.     def __init__(self,Parent,Name,width,Height,BODName,char):
  183.  
  184.  
  185.       BUIx.B_TextWidget.__init__(self,Parent,Name,"",font_server,"..\\..\\Data\\Mapa de letras.bmp")
  186.       self.SetChar(char)
  187.       self.SetAlpha(1.0)
  188.       self.Scale = 0.075
  189.       self.SetDrawFunc(self.Draw)
  190.       self.SetVisible(1)
  191.       self.SetColor(128,128,128)
  192.  
  193.  
  194.   
  195.   
  196.     def SetChar(self,char):
  197.       self.char=char
  198.       self.inv=char.GetInventory()
  199.  
  200.  
  201.     def Draw(self,x,y,time):
  202.       global ObjSlTimer
  203.       import darfuncs
  204.       
  205.       if self.inv.nKeys==0:
  206.         return
  207.       
  208.       if self.GetVisible()==0:
  209.         return
  210.  
  211.       Raster.SetAlpha(self.GetAlpha())
  212.       
  213.       i = 0
  214.       for j in range(self.inv.nKeys):
  215.         key = Bladex.GetEntity(self.inv.GetKey(j))
  216.         
  217.         if type(key.Data) is types.IntType:
  218.           auxval = key.Data
  219.           key.Data = darfuncs.EmptyClass()
  220.           key.Data.Used = auxval
  221.           
  222.  
  223.         if key.Data==None:
  224.           key.Data = darfuncs.EmptyClass()
  225.           key.Data.Used = 1
  226.         if key.Data.Used>0:
  227.           i=i+1
  228.           
  229.       Bladex.DrawBOD("Llavero",x+24,y+24,0,0,self.Scale,1)
  230.       self.SetText(`i`)
  231.       self.DefDraw(x+10,y+50,time)
  232.           
  233.             
  234.   class B_InvKey3DWidget(BUIx.B_TextWidget):
  235.     def __init__(self,Parent,Name,width,Height,BODName,char):
  236.  
  237.  
  238.       BUIx.B_TextWidget.__init__(self,Parent,Name,"",font_server,"../../Data/Mapa de letras.bmp")
  239.       self.SetChar(char)
  240.       self.SetAlpha(1.0)
  241.       self.Scale = 0.075
  242.       self.SetDrawFunc(self.Draw)
  243.       self.SetVisible(1)
  244.       self.SetColor(128,128,128)
  245.  
  246.  
  247.   
  248.   
  249.     def SetChar(self,char):
  250.       self.char=char
  251.       self.inv=char.GetInventory()
  252.  
  253.  
  254.     def Draw(self,x,y,time):
  255.       global ObjSlTimer
  256.       import darfuncs
  257.       
  258.       if self.inv.nKeys==0:
  259.         return
  260.       
  261.       if self.GetVisible()==0:
  262.         return
  263.       
  264.       if self.inv.GetSelectedObject() != "KeyRing":
  265.         return
  266.       
  267.       if ObjSlTimer < 0:
  268.         return
  269.       
  270.       if ObjSlTimer + 5 < Bladex.GetTime():
  271.         ObjSlTimer = -1
  272.         return
  273.  
  274.  
  275.       Raster.SetAlpha(self.GetAlpha())
  276.       
  277.       i = 0
  278.       for j in range(self.inv.nKeys):
  279.         key = Bladex.GetEntity(self.inv.GetKey(j))
  280.  
  281.         if type(key.Data) is types.IntType:
  282.           auxval = key.Data
  283.           key.Data = darfuncs.EmptyClass()
  284.           key.Data.Used = auxval
  285.         
  286.         if key.Data==None:
  287.           key.Data = darfuncs.EmptyClass()
  288.           key.Data.Used = 1
  289.         if key.Data.Used>0:
  290.           Bladex.DrawBOD(key.Kind,x+8,y+i*16+16,0,0,self.Scale,1)
  291.           self.SetText(Select.GetSelectionData(key.Name)[2])
  292.           self.DefDraw(x+24,y+i*16,time)
  293.           i=i+1
  294.       
  295.   
  296.   
  297.   
  298.   
  299.   
  300.   class B_InvTabletWidget(BUIx.B_TextWidget):
  301.     def __init__(self,Parent,Name,Text,char):        
  302.       #pdb.set_trace
  303.       BUIx.B_TextWidget.__init__(self,Parent,Name,Text,font_server,"../../Data/Icons/Iconosrunas.BMP");
  304.       self.SetChar(char)
  305.       self.SetAlpha(1.0)
  306.       self.SetColor(123,98,42)
  307.       #self.Scale=0.0
  308.       self.Name=Name
  309.       self.SetDrawFunc(self.Draw)
  310.   
  311.     def SetChar(self,char):
  312.       self.char=char
  313.       self.inv=char.GetInventory()
  314.   
  315.   
  316.     def Draw(self,x,y,time):
  317.       #pdb.set_trace()
  318.       if self.inv.GetTablet(self.Name)==None:
  319.         return
  320.       
  321.       if self.GetVisible()==0:
  322.         return
  323.       
  324.       self.DefDraw(x,y,time)
  325.       
  326.   
  327.   class B_InvSpecialKeyWidget(BUIx.B_BitmapWidget):
  328.     def __init__(self,Parent,Name,width,Height,char):    
  329.       BUIx.B_BitmapWidget.__init__(self,Parent,Name,width,Height,Name,"../../Data/Icons/Iconosllaves.mmp");
  330.       self.SetChar(char)
  331.       self.SetAlpha(1.0)
  332.       self.SetColor(255,255,255)
  333.       self.Scale=0.0
  334.       self.Name=Name
  335.       self.SetDrawFunc(self.Draw)
  336.   
  337.     def SetChar(self,char):
  338.       self.char=char
  339.       self.inv=char.GetInventory()
  340.   
  341.   
  342.     def Draw(self,x,y,time):
  343.   
  344.       #pdb.set_trace()
  345.       if self.inv.GetSpecialKey(0)==None:
  346.         return
  347.   
  348.       if self.inv.GetSpecialKey(self.Name)==None:
  349.         self.SetAlpha(0.2)
  350.       
  351.       #pdb.set_trace()
  352.       if self.GetVisible()==0:
  353.         return
  354.   
  355.       w,h=self.GetSize()
  356.       self.DefDraw(x,y,time)
  357.   
  358.   
  359.   
  360.   
  361.   
  362.   
  363.   
  364.   
  365.   
  366.   
  367.   def CreateEnemyWidget(RootName,Frame,set_autoscale=1):
  368.     wEnemy=BUIx.B_BitmapWidget(Frame,RootName,28,28,"Demon","../../Data/Icons/Demon.bmp");
  369.     wEnemy.SetColor(255,255,255)
  370.     
  371.     wVenomEnemy=WidgetsExtra.B_FlashBitmapWidget(Frame,RootName,28,28,"Enemy Poisoned","../../Data/Icons/Icono Veneno.bmp");
  372.     wVenomEnemy.SetColor(255,255,255)
  373.     wVenomEnemy.MaxAlpha=0.5
  374.     wVenomEnemy.SetFlash(5)
  375.     wVenomEnemy.SetVisible(0)
  376.     wEnemy.AddLabel(wVenomEnemy,0.5,0.5,
  377.                     BUIx.B_Widget.B_LAB_HCenter,BUIx.B_Widget.B_LAB_VCenter,
  378.                     BUIx.B_Widget.B_FR_HRelative, BUIx.B_Widget.B_FR_HCenter,
  379.                     BUIx.B_Widget.B_FR_VRelative, BUIx.B_Widget.B_FR_VCenter
  380.                     )   
  381.     
  382.     wEnemyLifeLabel=BUIx.B_TextWidget(wEnemy,RootName+"LifeLabel","250",font_server,"../../Data/Mapa de letras.bmp")
  383.     wEnemyLifeLabel.SetColor(255,0,0)
  384.     wEnemyLifeLabel.SetAlpha(0.5)
  385.     wEnemy.AddLabel(wEnemyLifeLabel,2,0,
  386.                     BUIx.B_Widget.B_LAB_HCenter,BUIx.B_Widget.B_LAB_Bottom,
  387.                     BUIx.B_Widget.B_FR_Right,BUIx.B_Widget.B_FR_Right,
  388.                     BUIx.B_Widget.B_FR_AbsoluteTop,BUIx.B_Widget.B_FR_Top
  389.                     )
  390.  
  391.                                         
  392.     wEnemyLevelLabel=BUIx.B_TextWidget(wEnemy,RootName+"LevelLabel","8",font_server,"../../Data/Mapa de letras.bmp")
  393.     wEnemyLevelLabel.SetColor(0,159,220)
  394.     wEnemyLevelLabel.SetAlpha(0.5)
  395.     wEnemy.AddLabel(wEnemyLevelLabel,1,0,
  396.                     BUIx.B_Widget.B_LAB_HCenter,BUIx.B_Widget.B_LAB_VCenter,
  397.                     BUIx.B_Widget.B_FR_Right,BUIx.B_Widget.B_FR_Right,
  398.                     BUIx.B_Widget.B_FR_AbsoluteTop,BUIx.B_Widget.B_FR_Top
  399.                     )
  400.   
  401.     wEnemyLifeBar=WidgetsExtra.B_FlashBarWidget(wEnemy,RootName+"LifeBar",32,5)
  402.     wEnemyLifeBar.SetFlashColor(53, 141, 36)
  403.     wEnemyLifeBar.SetColor(255,0,0)
  404.     wEnemyLifeBar.SetBackgroundColor(0,0,0)
  405.     wEnemyLifeBar.SetFlash(0)
  406.     wEnemyLifeBar.Continuous= 0
  407.     wEnemyLifeBar.SetBackgroundAlpha(1.0)
  408.     wEnemyLifeBar.SetAlpha(1.0)
  409.     wEnemyLifeBar.SetBitmap("BitmapBarraEnemigo")
  410.     wEnemy.AddLabel(wEnemyLifeBar,0.5,12,
  411.                     BUIx.B_Widget.B_LAB_HCenter,BUIx.B_Widget.B_LAB_Bottom,
  412.                     BUIx.B_Widget.B_FR_HCenter,BUIx.B_Widget.B_FR_HCenter,
  413.                     BUIx.B_Widget.B_FR_AbsoluteTop,BUIx.B_Widget.B_FR_Top
  414.                     )
  415.                     
  416.     wEnemyKeyLabel=B_Obj3DWidget (wEnemy,RootName+"Key",32,32,"Llave")
  417.     wEnemyKeyLabel.Scale=0
  418.     wEnemyKeyLabel.SetAlpha(1.0)
  419.     wEnemy.AddLabel(wEnemyKeyLabel,0.5,15+5,
  420.                     BUIx.B_Widget.B_LAB_HCenter,BUIx.B_Widget.B_LAB_Bottom,
  421.                     BUIx.B_Widget.B_FR_HCenter,BUIx.B_Widget.B_FR_HCenter,
  422.                     BUIx.B_Widget.B_FR_AbsoluteTop,BUIx.B_Widget.B_FR_Top
  423.                     )
  424.                     
  425.     wEnemyObjLabel=B_Obj3DWidget(wEnemy,RootName+"Obj",32,32,"Pocima")
  426.     wEnemyObjLabel.Scale=0
  427.     wEnemyObjLabel.SetAlpha(1.0)
  428.     wEnemy.AddLabel(wEnemyObjLabel,0.5,52+7,
  429.                     BUIx.B_Widget.B_LAB_HCenter,BUIx.B_Widget.B_LAB_Bottom,
  430.                     BUIx.B_Widget.B_FR_HCenter,BUIx.B_Widget.B_FR_HCenter,
  431.                     BUIx.B_Widget.B_FR_AbsoluteTop,BUIx.B_Widget.B_FR_Top
  432.                     )
  433.     if set_autoscale:
  434.       wEnemy.SetAutoScale(1)
  435.       wVenomEnemy.SetAutoScale(1)
  436.       wEnemyLifeLabel.SetAutoScale(1)
  437.       wEnemyLevelLabel.SetAutoScale(1)
  438.       wEnemyKeyLabel.SetAutoScale(1)
  439.       wEnemyObjLabel.SetAutoScale(1)
  440.  
  441.     return wEnemy,wVenomEnemy,wEnemyLifeLabel,wEnemyLevelLabel,wEnemyKeyLabel,wEnemyObjLabel,wEnemyLifeBar
  442.  
  443.   
  444.   
  445.   
  446.   
  447.   
  448.   
  449.   
  450.   
  451.   def CreateObjectWidget(RootName,BODName,Frame):
  452.     wObject=B_Obj3DWidget(Frame,RootName,24,32,BODName)
  453.     wObject.SetSolid(0)
  454.     wObject.SetBorder(0)
  455.     wObjectLabel=BUIx.B_TextWidget(wObject,RootName+"Label","",font_server,"../../Data/Mapa de letras.bmp")
  456.     wObjectLabel.SetColor(170,170,170)
  457.     wObjectLabel.SetAlpha(1.0)
  458.     wObject.AddLabel(wObjectLabel,0.5,4,
  459.                     BUIx.B_Widget.B_LAB_HCenter,BUIx.B_Widget.B_LAB_Bottom,
  460.                     BUIx.B_Widget.B_FR_HRelative,BUIx.B_Widget.B_FR_HCenter,
  461.                     BUIx.B_Widget.B_FR_AbsoluteTop,BUIx.B_Widget.B_FR_Top
  462.                     )
  463.     return wObject,wObjectLabel
  464.   
  465.   
  466.   
  467.   
  468.   
  469.   
  470.   
  471.   CYCLE_SPEED = 0.25
  472.   
  473.   class B_ObjectsFrame(BUIx.B_FrameWidget):
  474.     def __init__(self,Parent,Name,width,Height,char,InitObjPositions=[(0,6),(25,6),(50,6),(75,6),(100,6),(0,40),(25,40),(50,40),(75,40),(100,40)]):
  475.       BUIx.B_FrameWidget.__init__(self,Parent,Name,width,Height)
  476.       self.wObjects=[]
  477.       self.nObjects=len(InitObjPositions)
  478.       self.SetChar(char)
  479.       self.LastTime      = 0.0
  480.       self.LastSelection = 0
  481.   
  482.       
  483.       self.NameText=BUIx.B_TextWidget(self,"ObjName","Hola",font_server,"../../Data/Mapa de letras.bmp")
  484.       self.NameText.SetColor(255,255,255)
  485.       self.NameText.SetAlpha(1.0)
  486.       self.AddWidget(self.NameText,0.5,56,
  487.                        BUIx.B_FrameWidget.B_FR_HRelative,BUIx.B_FrameWidget.B_FR_HCenter,
  488.                        BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  489.       self.NameText.SetAutoScale(1)
  490.                        
  491.       self.BarraBonita = BUIx.B_BitmapWidget(self,"ObjNameBg",125,20,"MARCOINVENTARIO","../../Data/marcoinventario.mmp");
  492.       self.BarraBonita.SetColor(255,255,255)
  493.       self.BarraBonita.SetAlpha(0.75)
  494.       self.AddWidget(self.BarraBonita,0.5,52,
  495.                        BUIx.B_FrameWidget.B_FR_HRelative,BUIx.B_FrameWidget.B_FR_HCenter,
  496.                        BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  497.       self.BarraBonita.SetAutoScale(1)
  498.       
  499.  
  500.       for i in range(self.nObjects):
  501.         self.AddNewObject("ObjectElement_"+str(i), InitObjPositions[i]) 
  502.       self.AddWidgets()
  503.  
  504.       self.SetDrawFunc(self.Draw)
  505.   
  506.   
  507.   
  508.     def AddNewObject(self, object_name, InitObjPosition):
  509.         wObj=B_Obj3DWidget(self,object_name,24,32,"Pocima")
  510.         wObj.SetAlpha(1.0)
  511.         wObj.InitAlpha=1.0
  512.         wObj.Position=InitObjPosition
  513.         wObj.Scale=0
  514.         wObj.SetAutoScale(1)
  515.         self.wObjects.append(wObj)
  516.         
  517.     def Draw(self,x,y,time):
  518.       self.DefDraw(x,y,time)    # Posibles etiquetas.
  519.  
  520.       nb=len(self.BODList)
  521.       if nb>self.nObjects:
  522.         print "Error in objects frame, trying to display more objects than "+`self.nObjects`
  523.         return
  524.       
  525.   
  526.       text = ""
  527.       iCentral = 0
  528.       for i in range(nb):
  529.           if self.inv.IsObjectSelected(i):
  530.             iCentral = i
  531.  
  532.       if self.LastSelection != iCentral:
  533.         self.LastTime      = time+CYCLE_SPEED
  534.         self.LastSelection = iCentral
  535.       
  536.       if self.LastTime > time:
  537.          DeltaVariation = (self.LastTime-time)/CYCLE_SPEED
  538.       else:
  539.          DeltaVariation = 0
  540.  
  541.       if nb>0:
  542.         Advance = (3.1415*2)/nb
  543.         for i in range(nb):
  544.           wObjCurr=self.wObjects[i]
  545.  
  546.           Angle = Advance*(i-iCentral+DeltaVariation)
  547.           SelFactor = (math.cos(Angle)+1.0)/2.0
  548.           wx,wy = self.GetSize()
  549.           rw,rh=Raster.GetSize()
  550.           wx =wx*640/rw
  551.           wy =wy*480/rh
  552.           self.MoveWidgetTo(wObjCurr.Name(),(math.sin(Angle)+1.0)*(wx-25.0)/2.0,SelFactor*20.0)
  553.                     
  554.           wObjCurr.SetBOD(self.BODList[i])
  555.           wObjCurr.SetVisible(1)
  556.           wObjCurr.SetAlpha((SelFactor**2)*0.9+0.1)
  557.         
  558.           nMaxItems=self.inv.GetMaxNumberObjectsAt(i)
  559.           if self.inv.IsObjectSelected(i):
  560.             if self.BODList[i] == "Llavero":
  561.                 text = "("+`GetUnusedKeys(self.inv)`+") "
  562.             elif nMaxItems>1:
  563.                     nItems=self.inv.GetNumberObjectsAt(i)
  564.                     text="("+str(nItems)+"/"+str(nMaxItems)+") "
  565.             else:
  566.                     text = ""
  567.  
  568.       if self.inv.GetSelectedObject():
  569.         self.NameText.SetText(text+Select.GetSelectionData(self.inv.GetSelectedObject())[2])
  570.         self.BarraBonita.SetVisible(1)
  571.       else:
  572.         self.NameText.SetText("")
  573.         self.BarraBonita.SetVisible(0)
  574.  
  575.       for i in range(nb,self.nObjects):
  576.         self.wObjects[i].SetVisible(0)
  577.   
  578.       self.RecalcLayout()
  579.       
  580.       
  581.     def SetBODs(self,BODList):
  582.       self.BODList = BODList
  583.       
  584.   
  585.     def SetObjectNames(self,ObjectNameList):
  586.       nb=len(ObjectNameList)
  587.       if nb>self.nObjects:
  588.         print "Error in objects frame, trying to display more objects than "+`self.nObjects`
  589.         return
  590.   
  591.       for i in range(nb):
  592.         wObjCurr=self.wObjects[i]
  593.         wObjCurr.SetObjectName(ObjectNameList[i])
  594.   
  595.   
  596.     def SetChar(self,char):
  597.       self.char=char
  598.       self.inv=char.GetInventory()
  599.   
  600.   
  601.   
  602.     def AddWidgets(self):
  603.       for i in self.wObjects:
  604.         self.AddWidget(i,i.Position[0],i.Position[1],
  605.                        BUIx.B_FrameWidget.B_FR_AbsoluteLeft,BUIx.B_FrameWidget.B_FR_Left,
  606.                        BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  607.   
  608.   
  609.   
  610.   
  611.   
  612.   class B_HandWidget(BUIx.B_FrameWidget):
  613.     def __init__(self,Parent,Name,width,Height,Side,
  614.                  InitObjAlpha=[1.0,0.3,0.2,0.1],
  615.                  InitObjPositions=[(5,10),(35,20),(75,30),(110,40)],
  616.                  Wants_auto_scale=1):
  617.       BUIx.B_FrameWidget.__init__(self,Parent,Name,width,Height)
  618.       self.SetAutoScale(Wants_auto_scale)
  619.   
  620.       if(len(InitObjAlpha)!=len(InitObjPositions)):
  621.         raise InitError, "Init size mismatch"
  622.   
  623.       self.nObjects=len(InitObjAlpha)
  624.       self.Side=Side
  625.   
  626.       self.wObjects=[]
  627.       for i in range(self.nObjects):
  628.         wObj=B_Obj3DWidget(self,"HandElement_"+str(i),140,140,"Unset")
  629.         wObj.SetAlpha(InitObjAlpha[i])
  630.         wObj.InitAlpha=InitObjAlpha[i]
  631.         wObj.Position=InitObjPositions[i]
  632.         wObj.Scale=0.1
  633.         wObj.SetAutoScale(Wants_auto_scale)
  634.         self.wObjects.append(wObj)
  635.   
  636.       # Textos del objeto seleccionado
  637.       self.wNameText=BUIx.B_TextWidget(self,"NameText","None",font_server,"../../Data/Mapa de letras.bmp")
  638.       self.wNameText.SetColor(170,170,170)
  639.       self.wNameText.SetAlpha(1.0)
  640.       self.wNameText.SetAutoScale(Wants_auto_scale)
  641.       self.wDefText=BUIx.B_TextWidget(self,"DefText","+0 DEF ",font_server,"../../Data/Mapa de letras.bmp")
  642.       self.wDefText.SetAlpha(1.0)
  643.       self.wDefText.SetColor(255,0,0)
  644.       self.wDefText.SetAutoScale(Wants_auto_scale)
  645.       self.wPowText=BUIx.B_TextWidget(self,"PowText","+0 POW",font_server,"../../Data/Mapa de letras.bmp")
  646.       self.wPowText.SetAlpha(1.0)
  647.       self.wPowText.SetColor(0,160,221)
  648.       self.wPowText.SetAutoScale(Wants_auto_scale)
  649.       self.wAltPowText=BUIx.B_TextWidget(self,"AltPowText","+0 POW",font_server,"../../Data/Mapa de letras.bmp")
  650.       self.wAltPowText.SetAlpha(1.0)
  651.       self.wAltPowText.SetColor(0,160,221)
  652.       self.wAltPowText.SetAutoScale(Wants_auto_scale)
  653.       self.wResText=BUIx.B_TextWidget(self,"ResText","RESISTANCE: 0/0",font_server,"../../Data/Mapa de letras.bmp")
  654.       self.wResText.SetAlpha(1.0)
  655.       self.wResText.SetColor(119,241,252)
  656.       self.wResText.SetAutoScale(Wants_auto_scale)
  657.   
  658.       self.AddWidget(self.wNameText,0.5,0,
  659.                      BUIx.B_FrameWidget.B_FR_HRelative,BUIx.B_FrameWidget.B_FR_HCenter,
  660.                      BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  661.   
  662.       self.AddWidget(self.wDefText,0.5,12,
  663.                      BUIx.B_FrameWidget.B_FR_HRelative,BUIx.B_FrameWidget.B_FR_Right,
  664.                      BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  665.   
  666.       self.AddWidget(self.wPowText,0.5,12,
  667.                      BUIx.B_FrameWidget.B_FR_HRelative,BUIx.B_FrameWidget.B_FR_Left,
  668.                      BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  669.   
  670.       self.AddWidget(self.wAltPowText,0.5,12,
  671.                      BUIx.B_FrameWidget.B_FR_HRelative,BUIx.B_FrameWidget.B_FR_HCenter,
  672.                      BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  673.   
  674.       self.AddWidget(self.wResText,0.5,24,
  675.                      BUIx.B_FrameWidget.B_FR_HRelative,BUIx.B_FrameWidget.B_FR_HCenter,
  676.                      BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  677.       
  678.       self.AddWidgets()
  679.   
  680.     def AddWidgets(self):
  681.       wid_pos=BUIx.B_FrameWidget.B_FR_AbsoluteLeft
  682.       wid_anc=BUIx.B_FrameWidget.B_FR_Left
  683.       if self.Side!="Left":
  684.         wid_pos=BUIx.B_FrameWidget.B_FR_AbsoluteRight
  685.         wid_anc=BUIx.B_FrameWidget.B_FR_Right
  686.   
  687.       for i in self.wObjects:
  688.         self.AddWidget(i,i.Position[0],i.Position[1],
  689.                        wid_pos,wid_anc,
  690.                        BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  691.   
  692.   
  693.   
  694.     def ResetPositions(self):
  695.       for i in self.wObjects:
  696.         self.RemoveWidget(i.Name(),0)
  697.       self.AddWidgets()
  698.       index=0
  699.       for i in self.wObjects:
  700.         i.SetAlpha(i.InitAlpha)
  701.         index=index+1
  702.   
  703.   
  704.   
  705.     def SetBODs(self,BODList):
  706.       nb=len(BODList)
  707.       if nb>self.nObjects:
  708.         print "Error in hand widgets, trying to display more objects than "+`self.nObjects`
  709.         return
  710.   
  711.       for i in range(nb):
  712.         self.wObjects[i].SetBOD(BODList[i])
  713.         self.wObjects[i].SetVisible(1)
  714.   
  715.       for i in range(nb,self.nObjects):
  716.         self.wObjects[i].SetVisible(0)
  717.  
  718.     def SetObjectNames(self,ObjectNameList):
  719.       nb=len(ObjectNameList)
  720.       if nb>self.nObjects:
  721.         print "Error in hand widgets, trying to display more objects than "+`self.nObjects`
  722.         return
  723.       for i in range(nb):
  724.         wObjCurr=self.wObjects[i]
  725.         wObjCurr.SetObjectName(ObjectNameList[i])
  726.  
  727.     def SetText(self,name,power,defence,res,res_max):
  728.       #print name,power,defence,res,res_max
  729.       if power==None or name==None:
  730.         self.SwitchOffText()      
  731.       if defence!=None and res!=None and res_max != None:
  732.         self.SetNamePowDefResText(name,power,defence,res,res_max)
  733.       elif res!=None and res_max != None:
  734.         self.SetNamePowResText(name,power,res,res_max)
  735.       elif defence!=None:
  736.         self.SetNamePowDefText(name,power,defence)
  737.       
  738.  
  739.     def SwitchOffText(self):
  740.       self.wNameText.SetText("None")
  741.       self.wDefText.SetVisible(0)
  742.       self.wPowText.SetVisible(0)
  743.       self.wAltPowText.SetVisible(0)
  744.       self.wResText.SetVisible(0)
  745.       
  746.     def SetNamePowDefText(self,name,power,defence):
  747.       self.wNameText.SetText(name)
  748.       
  749.       self.wDefText.SetVisible(1)
  750.       self.wPowText.SetVisible(1)
  751.       self.wAltPowText.SetVisible(0)
  752.       self.wResText.SetVisible(0)
  753.       
  754.       def_text= `defence`+' DEF '
  755.       if defence>=0:
  756.         def_text= '+'+def_text
  757.         self.wDefText.SetColor(0,160,221)
  758.       else:
  759.         self.wDefText.SetColor(255,0,0)
  760.       self.wDefText.SetText(def_text)     
  761.  
  762.       power_text= `power`+' POW'
  763.       if power>=0:
  764.         power_text= '+'+power_text
  765.         self.wPowText.SetColor(0,160,221)
  766.       else:
  767.         self.wPowText.SetColor(255,0,0)
  768.       power_text= ' '+power_text
  769.       self.wPowText.SetText(power_text)     
  770.             
  771.       self.RecalcLayout()
  772.   
  773.     def SetNamePowResText(self,name,power,resistance,max_resistance):
  774.       self.wNameText.SetText(name)
  775.       
  776.       self.wDefText.SetVisible(0)
  777.       self.wPowText.SetVisible(0)
  778.       self.wAltPowText.SetVisible(1)
  779.       self.wResText.SetVisible(1)
  780.       
  781.       power_text= `power`+' POW'
  782.       if power>=0:
  783.         power_text= '+'+power_text
  784.         self.wAltPowText.SetColor(0,160,221)
  785.       else:
  786.         self.wAltPowText.SetColor(255,0,0)
  787.       power_text= ' '+power_text
  788.       self.wAltPowText.SetText(power_text)
  789.             
  790.       resistance_text='RESISTANCE: '+`resistance`+' / '+`max_resistance`
  791.       self.wResText.SetText(resistance_text)
  792.       self.RecalcLayout()
  793.  
  794.     def SetNamePowDefResText(self,name,power,defence,resistance,max_resistance):
  795.       self.wNameText.SetText(name)
  796.       
  797.       self.wDefText.SetVisible(1)
  798.       self.wPowText.SetVisible(1)
  799.       self.wAltPowText.SetVisible(0)
  800.       self.wResText.SetVisible(1)
  801.       
  802.       def_text= `defence`+' DEF '
  803.       if defence>=0:
  804.         def_text= '+'+def_text
  805.         self.wDefText.SetColor(0,160,221)
  806.       else:
  807.         self.wDefText.SetColor(255,0,0)
  808.       self.wDefText.SetText(def_text)     
  809.  
  810.       power_text= `power`+' POW'
  811.       if power>=0:
  812.         power_text= '+'+power_text
  813.         self.wPowText.SetColor(0,160,221)
  814.       else:
  815.         self.wPowText.SetColor(255,0,0)
  816.       power_text= ' '+power_text
  817.       self.wPowText.SetText(power_text)     
  818.             
  819.       resistance_text='RESISTANCE: '+`resistance`+' / '+`max_resistance`
  820.       self.wResText.SetText(resistance_text)
  821.       self.RecalcLayout()
  822.  
  823.   
  824.   class FadeInClass(Interpolator.LinearInt):
  825.     def __init__(self,init_value,end_value,parent,widget):
  826.       Interpolator.LinearInt.__init__(self,init_value,end_value)
  827.       self.parent=parent
  828.       self.widget=widget
  829.   
  830.     def Execute(self,value):
  831.       ret=Interpolator.LinearInt.Execute(self,value)
  832.       self.widget.MultiplyAlpha(ret)
  833.       self.parent.view_status=1
  834.   
  835.   
  836.     def EndExecute(self):
  837.       self.parent.view_status=2
  838.   
  839.   
  840.   
  841.   
  842.   
  843.   
  844.   class FadeOutClass(Interpolator.LinearInt):
  845.     def __init__(self,init_value,end_value,parent,widget):
  846.       Interpolator.LinearInt.__init__(self,init_value,end_value)
  847.       self.parent=parent
  848.       self.widget=widget
  849.   
  850.     def Execute(self,value):
  851.       ret=Interpolator.LinearInt.Execute(self,value)
  852.       self.widget.MultiplyAlpha(ret)
  853.       self.parent.view_status=3
  854.   
  855.     def EndExecute(self):
  856.       self.widget.SetVisible(0)
  857.       self.parent.view_status=0
  858.   
  859.   
  860.   
  861.   
  862.   
  863.   
  864.   
  865.   class CycleClass:
  866.     def __init__(self,init_value,end_value,parent,parentwidget,objwidget):
  867.       self.init_value=init_value
  868.       self.end_value=end_value
  869.       self.periodX=end_value[0]-init_value[0]
  870.       self.periodY=end_value[1]-init_value[1]
  871.       self.periodAlpha=end_value[2]-init_value[2]
  872.       self.periodWidth=end_value[0]-init_value[0]
  873.       self.periodHeight=end_value[1]-init_value[1]
  874.       self.parent=parent
  875.       self.parentwidget=parentwidget
  876.       self.objwidget=objwidget
  877.       self.parent.view_status=2
  878.   
  879.     def Execute(self,value):
  880.       ret=(self.init_value[0]+self.periodX*value,
  881.            self.init_value[1]+self.periodY*value,
  882.            self.init_value[2]+self.periodAlpha*value,
  883.           )
  884.       self.parentwidget.MoveWidgetTo(self.objwidget.Name(),ret[0],ret[1])
  885.       self.objwidget.SetAlpha(ret[2])
  886.   
  887.   
  888.     def EndExecute(self):
  889.       self.parent.EndCycle()
  890.   
  891.   
  892.   
  893.   
  894.   
  895.   
  896.   
  897.   import pdb
  898.   class InvControl:
  899.     def __init__(self,name,widget,char,view_period=2.0,cycle_period=0.3,fadein_period=0.3,fadeout_period=0.3,
  900.                  end_cycle_callback=None,Wants_auto_scale=1):
  901.       self.view_time=-2.0       # Auxiliar
  902.       self.cycle_time=-2.0      # Auxiliar
  903.       self.cycle_count=0        # Auxiliar
  904.   
  905.       self.view_period=view_period       # Tiempo que permanece visible
  906.       self.cycle_period=cycle_period     # Tiempo que tarda en ciclar
  907.       self.fadein_period=fadein_period   # Tiempo que tarda en aparecer
  908.       self.fadeout_period=fadeout_period  # Tiempo que tarda en desaparecer
  909.       self.view_status=0  #0:no visible, 1:Apareciendo, 2: Visible, 3: Desapareciendo 
  910.       self.widget=widget
  911.       self.SetChar(char)
  912.       self.interpolator=Interpolator.Interp(name)
  913.       self.name=name
  914.       self.m_FadeIn=FadeInClass(0.0,1.0,self,self.widget)
  915.       self.m_FadeOut=FadeOutClass(1.0,0.0,self,self.widget)
  916.       self.SetBODs()
  917.       self.end_cycle_callback=end_cycle_callback
  918.   
  919.   
  920.     def SetChar(self,char):
  921.       self.char=char
  922.       self.inv=char.GetInventory()
  923.   
  924.     def CycleFunc(self):
  925.       time=Bladex.GetTime()
  926.       self.view_time=time
  927.       Bladex.AddScheduledFunc(time+self.view_period,self.FadeOut,())
  928.   
  929.       
  930.     def EndCycle(self):
  931.       self.cycle_count=self.cycle_count+1
  932.       if self.cycle_count==self.widget.nObjects:
  933.         self.cycle_count=0
  934.         self.CycleFunc()
  935.         #pdb.set_trace()
  936.         name=Reference.GetObjectFriendlyName(self.widget.wObjects[0].GetBOD())        
  937.         power, defence, res, res_max= Reference.GiveObjectPowDefResResMaxData(self.widget.wObjects[0].GetObjectName())        
  938.         self.widget.SetText(name, power, defence, res, res_max)
  939.   
  940.       
  941.   
  942.     def SetBODs(self):
  943.       pass
  944.   
  945.   
  946.     def FadeOut(self):
  947.       time=Bladex.GetTime()
  948.       if time-self.view_time>self.view_period:
  949.         self.view_status=3
  950.         if self.end_cycle_callback:
  951.           self.end_cycle_callback()
  952.         self.interpolator.AddAction(time,time+self.fadeout_period,self.m_FadeOut)
  953.   
  954.   
  955.   
  956.     def CycleElements(self):
  957.       self.SetBODs()
  958.       name=Reference.GetObjectFriendlyName(self.widget.wObjects[0].GetBOD())      
  959.       power, defence, res, res_max= Reference.GiveObjectPowDefResResMaxData(self.widget.wObjects[0].GetObjectName())
  960.       self.widget.SetText(name, power, defence, res, res_max)
  961.  
  962.       #if self.char.Wuea==Enm_Def.WUEA_WAIT:
  963.     #  return
  964.       time=Bladex.GetTime()
  965.       if self.view_status==2:  #Si es visible puedo ciclar
  966.         if time-self.cycle_time>self.cycle_period:
  967.           self.cycle_time=time
  968.           self.view_time=time
  969.           end_cycle_time=time+self.cycle_period
  970.   
  971.           if len(self.widget.wObjects)>1:
  972.             init_list=[]
  973.             for i in self.widget.wObjects:
  974.               init_list.append(i.Position[0],i.Position[1],i.InitAlpha)
  975.   
  976.             len_init_list=len(init_list)
  977.             m_Cycle=CycleClass(init_list[0],
  978.                                init_list[self.widget.nObjects-1],
  979.                                self,
  980.                                self.widget,
  981.                                self.widget.wObjects[0]
  982.                               )
  983.             self.interpolator.AddAction(time,end_cycle_time,m_Cycle)
  984.   
  985.             for i in range(1,len_init_list):
  986.               m_Cycle=CycleClass(init_list[i],
  987.                                  init_list[i-1],
  988.                                  self,
  989.                                  self.widget,
  990.                                  self.widget.wObjects[i]
  991.                                 )
  992.               self.interpolator.AddAction(time,end_cycle_time,m_Cycle)
  993.   
  994.   
  995.       if time-self.view_time>self.view_period:
  996.         if self.view_status==0:
  997.           #pdb.set_trace()
  998.           self.Alpha=0.0
  999.           self.widget.MultiplyAlpha(self.Alpha)
  1000.           self.widget.SetVisible(1)
  1001.           self.view_status=1
  1002.           self.interpolator.AddAction(time,time+self.fadein_period,self.m_FadeIn)
  1003.           Bladex.AddScheduledFunc(Bladex.GetTime()+self.view_period,self.FadeOut,())
  1004.         elif self.view_status==1:
  1005.           pass
  1006.         elif self.view_status==2:
  1007.           pass
  1008.         #elif self.view_status==3:
  1009.           #self.view_status=1
  1010.           #Bladex.AddScheduledFunc(Bladex.GetTime()+0.1,self.FadeIn,())
  1011.           #print "Not implemented"
  1012.         self.view_time=time
  1013.   
  1014.   
  1015.   
  1016.     def HideElements(self):
  1017.       if self.view_status==1:
  1018.         time=Bladex.GetTime()
  1019.         if time-self.view_time>1.0:
  1020.           self.view_status=0
  1021.           self.widget.SetVisible(0)
  1022.         else:
  1023.           Bladex.AddScheduledFunc(time+2.0,self.HideElements,())
  1024.   
  1025.   
  1026.   class InvArrowsControl(BUIx.B_FrameWidget):
  1027.     def __init__(self,Parent,Name,width,Height,char):        
  1028.       #pdb.set_trace
  1029.       BUIx.B_FrameWidget.__init__(self,Parent,Name,width,Height)
  1030.       
  1031.       self.wNameText=BUIx.B_TextWidget(self,"NameText","UNSPECIFIED ARROWS",font_server,"../../Data/Mapa de letras.bmp")
  1032.       self.wNameText.SetAlpha(1.0)
  1033.       self.wNameText.SetColor(170,170,170)
  1034.       self.AddWidget(self.wNameText,0.5,0,
  1035.                      BUIx.B_FrameWidget.B_FR_HRelative,BUIx.B_FrameWidget.B_FR_HCenter,
  1036.                      BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  1037.       
  1038.       self.wNumText=BUIx.B_TextWidget(self,"NumText","0/0",font_server,"../../Data/Mapa de letras.bmp")
  1039.       self.wNumText.SetAlpha(1.0)
  1040.       self.wNumText.SetColor(0,159,220)  
  1041.       self.AddWidget(self.wNumText,0.5,12,
  1042.                      BUIx.B_FrameWidget.B_FR_HRelative,BUIx.B_FrameWidget.B_FR_HCenter,
  1043.                      BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  1044.   
  1045.       self.SetChar(char)    
  1046.       self.Name=Name
  1047.       self.SetDrawFunc(self.Draw)
  1048.   
  1049.     def SetChar(self,char):
  1050.       self.char=char
  1051.       self.inv=char.GetInventory()
  1052.   
  1053.   
  1054.     def Draw(self,x,y,time):
  1055.       #pdb.set_trace()
  1056.       quiver= self.inv.GetSelectedQuiver()
  1057.       if not quiver:
  1058.         return
  1059.   
  1060.       #if quiver!=self.inv.GetLeftBack() and quiver!=self.inv.GetRightBack():    
  1061.       if not self.inv.HoldingBow:
  1062.         return
  1063.       
  1064.       object=Bladex.GetEntity(quiver)
  1065.       self.wNameText.SetText(Reference.GetObjectFriendlyName(object.Data.ArrowType)+"s")  
  1066.       self.wNumText.SetText(`object.Data.NumberOfArrows()`+"/"+`object.Data.MaxArrows`)
  1067.       self.RecalcLayout()
  1068.       w,h=self.GetSize()
  1069.       self.DefDraw(x,y,time)
  1070.   
  1071.   class InvShieldControl(InvControl):
  1072.     InvMode=0  # 0: Shields, 1:Quivers
  1073.   
  1074.     def CycleFunc(self):
  1075.       #pdb.set_trace()
  1076.       InvControl.CycleFunc(self)
  1077.       if self.InvMode==0:  #Shields
  1078.         self.inv.CycleShields()
  1079.       else:
  1080.         self.inv.CycleQuivers()
  1081.       self.SetBODs()
  1082.       self.widget.ResetPositions()
  1083.   
  1084.   
  1085.     def SetBODs(self):
  1086.       GetObjFunc=None
  1087.   
  1088.       nItems=0
  1089.       if self.InvMode==0:
  1090.         GetObjFunc=self.inv.GetShield
  1091.         nItems=self.inv.nShields
  1092.       else:
  1093.         GetObjFunc=self.inv.GetQuiver
  1094.         nItems=self.inv.nQuivers
  1095.   
  1096.   
  1097.       BODList=[]
  1098.       ObjectNameList=[]
  1099.       for i in range(nItems):
  1100.         Obj=GetObjFunc(i)
  1101.         ent=Bladex.GetEntity(Obj)
  1102.         BOD=ent.Kind        
  1103.         BODList.append(BOD)
  1104.         Name=ent.Name
  1105.         ObjectNameList.append(Name)
  1106.   
  1107.       self.widget.SetBODs(BODList)
  1108.       self.widget.SetObjectNames(ObjectNameList)
  1109.   
  1110.   
  1111.   
  1112.     def SetInvMode(self,new_mode):
  1113.       if self.InvMode==new_mode:
  1114.         return
  1115.   
  1116.       self.InvMode=new_mode
  1117.       self.SetBODs()
  1118.   
  1119.   
  1120.   
  1121.   
  1122.   
  1123.   
  1124.   class InvWeaponsControl(InvControl):
  1125.     def __init__(self,name,widget,char,ShieldsControl,view_period=2.0,cycle_period=0.3,fadein_period=0.3,
  1126.                  fadeout_period=0.3,end_cycle_callback=None,Wants_auto_scale=1):
  1127.       InvControl.__init__(self,name,widget,char,view_period,cycle_period,fadein_period,fadeout_period,
  1128.                           end_cycle_callback,Wants_auto_scale)
  1129.       self.ShieldsControl=ShieldsControl
  1130.   
  1131.   
  1132.   
  1133.     def CycleFunc(self):
  1134.       #pdb.set_trace()
  1135.       InvControl.CycleFunc(self)
  1136.       self.inv.CycleWeapons()
  1137.       self.SetBODs()
  1138.       self.widget.ResetPositions()
  1139.       sel_weapon=self.inv.GetSelectedWeapon()
  1140.       if sel_weapon:     
  1141.         sel_entity=Bladex.GetEntity(sel_weapon)
  1142.         if Reference.GiveObjectFlag(sel_weapon)==Reference.OBJ_BOW:
  1143.           self.ShieldsControl.SetInvMode(1)
  1144.         else:
  1145.           self.ShieldsControl.SetInvMode(0)
  1146.   
  1147.   
  1148.     def SetBODs(self):
  1149.       GetObjFunc=self.inv.GetWeapon
  1150.       BODList=[]
  1151.       ObjectNameList=[]
  1152.       for i in range(self.inv.nWeapons):
  1153.         Obj=GetObjFunc(i)
  1154.         ent=Bladex.GetEntity(Obj)
  1155.         BOD=ent.Kind
  1156.         BODList.append(BOD)
  1157.         Name=ent.Name
  1158.         ObjectNameList.append(Name)
  1159.       
  1160.       self.widget.SetBODs(BODList)
  1161.       self.widget.SetObjectNames(ObjectNameList)
  1162.     
  1163.   
  1164.   
  1165.   def AddKeyRingToInventory():
  1166.     import Actions
  1167.     import darfuncs
  1168.     if not Bladex.GetEntity("KeyRing"):
  1169.       KeyRing =Bladex.CreateEntity("KeyRing","Llavero",0,0,0)
  1170.       KeyRing.Static = 0
  1171.       darfuncs.SetHint(KeyRing,"Keys")
  1172.       Actions.TakeObject("Player1","KeyRing")
  1173.   
  1174.   
  1175.   class InvObjectsControl(InvControl):
  1176.     def __init__(self,name,widget,char,view_period=2.0,cycle_period=0.3,fadein_period=0.3,
  1177.                  fadeout_period=0.3,end_cycle_callback=None,Wants_auto_scale=1):
  1178.       InvControl.__init__(self,name,widget,char,
  1179.                           view_period,cycle_period,fadein_period,fadeout_period,
  1180.                           end_cycle_callback,
  1181.                           Wants_auto_scale)
  1182.       self.cycle_period=0.0     # Tiempo que tarda en ciclar
  1183.       self.end_cycle_callback = self.DeactivateUseFunc
  1184.     
  1185.     def DeactivateUseFunc(self):
  1186.       self.char.Data.InventoryActive = 0
  1187.   
  1188.   
  1189.     def CycleFunc(self):
  1190.       InvControl.CycleFunc(self)
  1191.       self.inv.CycleObjects()
  1192.       self.SetBODs()
  1193.   
  1194.       
  1195.     def SetBODs(self):
  1196.       BODList=[]
  1197.       ObjectNameList=[]
  1198.       for i in range(self.inv.nKindObjects):
  1199.         Obj0=self.inv.GetObject(i)
  1200.         ent=Bladex.GetEntity(Obj0)
  1201.         BOD=ent.Kind
  1202.         BODList.append(BOD)
  1203.         Name=ent.Name
  1204.         ObjectNameList.append(Name)
  1205.   
  1206.       self.widget.SetBODs(BODList)
  1207.       self.widget.SetObjectNames(ObjectNameList)
  1208.   
  1209.   
  1210.   
  1211.   
  1212.     def CycleElements(self):
  1213.       global ObjSlTimer
  1214.       if self.inv.nKeys:
  1215.        AddKeyRingToInventory()
  1216.       
  1217.       time=Bladex.GetTime()
  1218.       ObjSlTimer = time
  1219.       self.char.Data.InventoryActive = 1
  1220.       if self.view_status==2:  #Si es visible puedo ciclar
  1221.         if time-self.cycle_time>self.cycle_period:
  1222.           self.cycle_time=time
  1223.           self.view_time=time
  1224.           end_cycle_time=time+self.cycle_period
  1225.           self.CycleFunc()
  1226.   
  1227.       if time-self.view_time>self.view_period:
  1228.         if self.view_status==0:
  1229.           self.Alpha=0.0
  1230.           self.widget.MultiplyAlpha(self.Alpha)
  1231.           self.widget.SetVisible(1)
  1232.           self.view_status=1
  1233.           self.SetBODs()
  1234.           self.interpolator.AddAction(time,time+self.fadein_period,self.m_FadeIn)
  1235.           Bladex.AddScheduledFunc(Bladex.GetTime()+self.view_period,self.FadeOut,())
  1236.         elif self.view_status==1:
  1237.           pass
  1238.         elif self.view_status==2:
  1239.           pass
  1240.         elif self.view_status==3:
  1241.           #self.view_status=1
  1242.           #Bladex.AddScheduledFunc(Bladex.GetTime()+0.1,self.FadeIn,())
  1243.           print "Not implemented"
  1244.         self.view_time=time
  1245.   
  1246.   
  1247.   
  1248.   
  1249.   
  1250.   
  1251.   
  1252.   
  1253.   
  1254.   
  1255.